// pages/Register/Register.js

var api = require('../../config/api.js');
var keys = require('../../config/keys.js');
var amap = require('../../libs/amap-wx.130.js');

Page({

    /**
     * 页面的初始数据
     */
    data: {
        electricianLongitude: 106.57,
        electricianLatitude: 29.55,
        electricianHead:'', // 初始时不上传头像，显示空
        electricianIdBackImg: '', // 身份证正面
        electricianIdFrontImg: '', // 身份证背面
        electricianNvqImg: '', // 电工证
        LocationInfo: {},
        electricianName: '',
        electricianPhone: '',
        electricianPwd: '',
        electricianIdCode: '',
        electricianProvince: '',
        electricianCity: '',
        electricianRegion: '',
        electricianAddress: '',
        electriciantownship: '',
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        // 获取用户位置
        this.getMapInfo();
    },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {
    },
    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
    },
    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {
    },
    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {
    },
    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {
    },
    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {
    },
    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {
    },
    /**
     * 返回上一页
     */
    toBack: function(){
      wx.reLaunch({
        url: '/pages/Login-1/Login-1',
      })
    },
    // 上传头像
    onUploadElectricianHead: function () {
        this.uploadFile({
          fileType: 'image', // 文件类型
          successCallback: (fileUrl) => {
            console.log('上传图片地址:', fileUrl);
            this.setData({
                electricianHead: fileUrl
            });
          },
          failCallback: (error) => {
            console.error('上传失败:', error);
          }
        });
      },
    
    // 上传人像面
    onUploadElectricianIdBackImg: function () {
        this.uploadFile({
          fileType: 'image', // 文件类型
          successCallback: (fileUrl) => {
            console.log('上传图片地址:', fileUrl);
            this.setData({
                electricianIdBackImg: fileUrl
            });
          },
          failCallback: (error) => {
            console.error('上传失败:', error);
          }
        });
      },
      // 上传国徽面
      onUploadElectricianIdFrontImg: function () {
        this.uploadFile({
          fileType: 'image', // 文件类型
          successCallback: (fileUrl) => {
            console.log('上传图片地址:', fileUrl);
            this.setData({
                electricianIdFrontImg: fileUrl
            });
          },
          failCallback: (error) => {
            console.error('上传失败:', error);
          }
        });
      },
      // 上传电工证
      onUploadElectricianNvqImg: function () {
        this.uploadFile({
          fileType: 'image', // 文件类型
          successCallback: (fileUrl) => {
            console.log('上传图片地址:', fileUrl);
            this.setData({
                electricianNvqImg: fileUrl
            });
          },
          failCallback: (error) => {
            console.error('上传失败:', error);
          }
        });
      },

      // 通用文件上传函数
      uploadFile: function (options) {
        const {
          filePath,
          fileType, // 文件类型
          sourceType = ['album', 'camera'], // 选择文件来源
          count = 1, // 可选择的文件数量
          name = 'file', // 后端接收文件的字段名
          successCallback, // 上传成功后的回调
          failCallback // 上传失败后的回调
        } = options;
        if (filePath) {
          console.log('已有文件')
          wx.uploadFile({
            url: api.uploadFile,
            filePath: filePath, // 本地文件路径
            name: name, // 后端接收文件的字段名
            success: (uploadResult) => {
              const data = JSON.parse(uploadResult.data);
              console.log('上传文件结果:', data);
              if (data.code === 200) {
                wx.showToast({
                  title: '上传成功',
                  icon: 'success'
                });
                if (typeof successCallback === 'function') {
                  successCallback(data.data); // 执行成功回调，传入文件地址
                }
              } else {
                wx.showToast({
                  title: data.message || '上传失败',
                  icon: 'none'
                });
                if (typeof failCallback === 'function') {
                  failCallback(data);
                }
              }
            },
            fail: (error) => {
              console.error('上传失败:', error);
              wx.showToast({
                title: '上传失败，请重试',
                icon: 'none'
              });
              if (typeof failCallback === 'function') {
                failCallback(error);
              }
            }
          });
        } else {
          console.log('选择文件')
          // 选择文件
          // wx.chooseMessageFile({})
          wx.chooseImage({
            count: count,
            type: fileType,
            success: (chooseResult) => {
              const filePath = chooseResult.tempFiles[0].path; // 获取文件路径
              console.log('选择的文件路径:', filePath);
    
              // 上传文件到服务器
              wx.uploadFile({
                url: api.uploadFile, // 上传接口
                filePath: filePath, // 本地文件路径
                name: name, // 后端接收文件的字段名
                success: (uploadResult) => {
                  const data = JSON.parse(uploadResult.data);
                  console.log('上传文件结果:', data);
                  if (data.code === 200) {
                    wx.showToast({
                      title: '上传成功',
                      icon: 'success'
                    });
                    if (typeof successCallback === 'function') {
                      successCallback(data.data); // 执行成功回调，传入文件地址
                    }
                  } else {
                    wx.showToast({
                      title: data.message || '上传失败',
                      icon: 'none'
                    });
                    if (typeof failCallback === 'function') {
                      failCallback(data);
                    }
                  }
                },
                fail: (error) => {
                  console.error('上传失败:', error);
                  wx.showToast({
                    title: '上传失败，请重试',
                    icon: 'none'
                  });
                  if (typeof failCallback === 'function') {
                    failCallback(error);
                  }
                }
              });
            },
            fail: (err) => {
              console.error('选择文件失败:', err);
              wx.showToast({
                title: '选择文件失败',
                icon: 'none'
              });
              if (typeof failCallback === 'function') {
                failCallback(err);
              }
            }
          });
        }
      },

    // 输入姓名
    doInputRealNanme: function(e){
        this.setData({
            // e.detail.value 就是代表输入的值
            electricianName: e.detail.value
        });
    },

    // 输入手机号
    doInputPhoneNum: function(e){
        this.setData({
            electricianPhone: e.detail.value
        });
    },

    // 输入密码
    doInputPassword: function(e){
        this.setData({
            electricianPwd: e.detail.value
        });
    },

    // 输入身份证号
    doInputId: function(e){
        this.setData({
            electricianIdCode: e.detail.value
        });
    },
    // 输入地区
    doInputArea: function(e){
        this.setData({
            Area: e.detail.value
        });
    },

    getMapInfo: function(){
        var that = this;
        var myAmapFun = new amap.AMapWX({key:keys.amapKey});
        myAmapFun.getRegeo({
          success: function(data){
             console.log('返回的地理位置信息', data[0])
            //  that.setData({
            //     electricianLongitude: data[0].longitude,
            //     electricianLatitude: data[0].latitude,
            //  })
             const LocationInfo = data[0].regeocodeData.addressComponent;
             console.log('LocationInfo的内容', LocationInfo)
            that.setData({
                // 先自动显示，省市区街道
                electricianProvince: LocationInfo.province,
                electricianCity: LocationInfo.city,
                electricianRegion: LocationInfo.district,
                electriciantownship: LocationInfo.township,
            });
          },
          fail: function(info){
          }
        })
},

    // 输入具体地址信息
    doInputLocation: function(e){
        this.setData({
            electricianAddress: e.detail.value
        });
    },

    // 点击注册按钮后，需要反馈信息
    doRegister: function(){
        if(this.data.electricianName == ''){
            wx.showToast({
                title: '请填写电工姓名',
                icon: 'none',
              })
              return ;
        }else if(this.data.electricianPhone == ''){
            wx.showToast({
                title: '请填写电工电话',
                icon: 'none',
              })
              return ;
        }else if(this.data.electricianPwd == ''){
            wx.showToast({
                title: '请填写电工密码',
                icon: 'none',
              })
              return ;
        }else if(this.data.electricianNvqImg == ''){
            wx.showToast({
                title: '请填写电工证图片',
                icon: 'none',
              })
              return ;
        }else if(this.data.electricianAddress == ''){
            wx.showToast({
                title: '请填写详细地址',
                icon: 'none',
              })
              return ;
        }

         // 检查身份证和手机号是否只包含数字
        const isNumeric = (str) => /^\d+$/.test(str);

        // 判断手机号
        if (!isNumeric(this.data.electricianPhone)) {
            wx.showToast({
              title: '电话号码只能为数字',
              icon: 'none'
            });
            return;
          }

        // 判断身份证号
        if(this.data.electricianIdCode != ''){
            if (!isNumeric(this.data.electricianIdCode)) {
                wx.showToast({
                  title: '身份证号输入只能为数字',
                  icon: 'none'
                });
                return;
              }
        }
          
        if(this.data.electricianPhone.length != 11){
            wx.showToast({
              title: '请输入正确的手机号位数',
              icon: 'none',
            });
            return ;
        }else{
            if(this.data.electricianPwd.length < 6){
                wx.showToast({
                  title: '请设置正确的密码位数',
                  icon: 'none',
                });
                return ;
            }else{
                if(this.data.electricianIdCode.length != 18 && this.data.electricianIdCode != ''){
                    wx.showToast({
                      title: '请输入正确的身份证号位数',
                      icon: 'none',
                    });
                    return ;
                }
            }
        }


        // 直辖市时，electricianCity为空数组
        var city = this.data.electricianCity;
        if(city == ''){
            city = this.data.electricianProvince;
        }
        console.log('city的值',city)
        
        // 各个变量都合法之后，需要请求后台接口
        wx.request({
          url: api.register,
          method: 'POST',
          // 将data中的数据提交给后台处理
          data:{
            electricianLatitude: this.data.electricianLatitude,
            electricianLongitude: this.data.electricianLongitude,
            electricianAddress: this.data.electricianAddress,
            electricianRegion: this.data.electricianRegion,
            electricianCity: city,
            electricianProvince: this.data.electricianProvince,
            electricianIdCode: this.data.electricianIdCode,
            electricianIdBackImg: this.data.electricianIdBackImg,
            electricianIdFrontImg: this.data.electricianIdFrontImg,
            electricianNvqImg: this.data.electricianNvqImg,
            electricianHead:this.data.electricianHead,
            electricianName: this.data.electricianName,
            electricianPhone: this.data.electricianPhone,
            electricianPwd: this.data.electricianPwd,
            electricianIdCode: this.data.electricianIdCode,
          },
          // 请求成功的回调函数
          success: function(res){
              // 注册成功，code = 200 
              if(res.data.code == 200){
                wx.showToast({
                  title: '注册成功',
                  icon: 'none',
                });
              }else{
                // 说明上述数据已经在后台数据库中存在
                wx.showToast({
                  title: res.data.mesage,
                  icon: 'none',
                });
              }
          },
          fail: function(){
            wx.showToast({
              title: '网络异常',
              icon: 'none',
            });
          },
        })
        wx.navigateBack();
    }

})